home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / lamstex / inputs / alignat.tex < prev    next >
Text File  |  1991-09-06  |  5KB  |  104 lines

  1. \catcode`\@=11
  2. \def\alignedat#1{\null\,\vcenter\bgroup\doat@{#1}\vspace@\Let@
  3.  \ifinany@\else\openup\jot\fi\ialign\bgroup\span\preamble@@\crcr}
  4. \def\doat@#1{\toks@{\hfil\strut@$\m@th
  5.  \displaystyle{\the\hashtoks@}$&$\m@th\displaystyle
  6.  {{}\the\hashtoks@}$\hfil}%
  7.  \atcount@#1\relax\advance\atcount@\m@ne
  8.  \loop\ifnum\atcount@>\z@\toks@=\expandafter{\the\toks@&\hfil$\m@th
  9.  \displaystyle{\the\hashtoks@}$&$\m@th
  10.  \displaystyle{{}\the\hashtoks@}$\hfil}\advance\atcount@\m@ne\repeat
  11.  \edef\preamble@{\the\toks@}\edef\preamble@@{\preamble@}}
  12. \let\endalignedat\endaligned
  13. \def\alignat{\RIfMIfI@\DN@{\onlydmatherr@\alignat}\else
  14.  \DN@{\csname alignat \endcsname}\fi\else
  15.  \DN@{\onlydmatherr@\alignat}\fi\next@}
  16. \expandafter\def\csname alignat \endcsname#1#2\endalignat
  17.  {\inany@true\xat@false
  18.  \def\tag{\global\tag@true
  19.   \count@#1\relax\multiply\count@\tw@\advance\count@\m@ne
  20.   \gdef\tag@{&}%
  21.   \loop\ifnum\count@>\and@\xdef\tag@{&\omit\tag@}%
  22.   \advance\count@\m@ne\repeat
  23.   \tag@\relax}%
  24.  \vspace@\allowdisplaybreak@\displaybreak@\intertext@
  25.  \displ@y@\measuring@true\tag@CC\tag@C
  26.  \setbox\savealignat@\hbox{\noset@\unlabel@$\m@th\displaystyle\Let@
  27.   \attag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
  28.  \measuring@false
  29.  \Let@\attag@{#1}\tag@C\tag@CC
  30.  \tabskip\centering@\halign to\displaywidth
  31.   {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}}
  32. \Invalid@\endalignat
  33. \def\xalignat{\RIfMIfI@
  34.  \DN@{\onlydmatherr@\xalignat}\else
  35.  \DN@{\csname xalignat \endcsname}\fi\else
  36.  \DN@{\onlydmatherr@\xalignat}\fi\next@}
  37. \expandafter\def\csname xalignat \endcsname#1#2\endxalignat
  38.  {\inany@true\xat@true
  39.  \def\tag{\global\tag@true
  40.   \count@#1\relax\multiply\count@\tw@\advance\count@\m@ne
  41.   \gdef\tag@{&}%
  42.   \loop\ifnum\count@>\and@\xdef\tag@{&\omit\tag@}%
  43.   \advance\count@\m@ne\repeat
  44.   \tag@\relax}%
  45.  \vspace@\allowdisplaybreak@\displaybreak@\intertext@
  46.  \displ@y@\measuring@true\tag@CC\tag@C
  47.  \setbox\savealignat@\hbox{\noset@\unlabel@$\m@th\displaystyle\Let@
  48.   \attag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
  49.  \measuring@false\Let@\attag@{#1}\tag@C\tag@CC
  50.  \tabskip\centering@\halign to\displaywidth
  51.  {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}}
  52. \def\attag@#1{\let\Maketag@\maketag@\let\TAG@\Tag@
  53.  \let\Prepost@\prepost@\let\Reprepost@\reprepost@
  54.  \let\Tag@\relax\let\maketag@\relax
  55.  \let\prepost@\relax\let\reprepost@\relax
  56.  \ifmeasuring@
  57.   \def\llap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}%
  58.   \def\rlap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}%
  59.  \else\let\llap@\llap\let\rlap@\rlap\fi
  60.  \toks@{\hfil\strut@
  61.   $\m@th\displaystyle{\@lign\the\hashtoks@\prepost@}$%
  62.   \tabskip\z@skip\global\advance\and@\@ne&
  63.   $\m@th\displaystyle{{}\@lign\the\hashtoks@\prepost@}$\hfil
  64.   \ifxat@\tabskip\centering@\fi\global\advance\and@\@ne}%
  65.  \iftagsleft@
  66.   \toks@@{\tabskip\centering@&\Tag@\kern-\displaywidth
  67.    \rlap@{\@lign\reprepost@\maketag@\the\hashtoks@\maketag@}%
  68.    \global\advance\and@\@ne\tabskip\displaywidth}\else
  69.   \toks@@{\tabskip\centering@&\Tag@\llap@{\@lign\reprepost@\maketag@
  70.    \the\hashtoks@\maketag@}\global\advance\and@\@ne\tabskip\z@skip}\fi
  71.  \atcount@#1\relax\advance\atcount@\m@ne
  72.  \loop\ifnum\atcount@>\z@
  73.   \toks@\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\@lign
  74.   \the\hashtoks@\prepost@}$\global\advance\and@\@ne
  75.   \tabskip\z@skip
  76.   &$\m@th\displaystyle{{}\@lign\the\hashtoks@\prepost@}$\hfil\ifxat@
  77.   \tabskip\centering@\fi\global\advance\and@\@ne}\advance\atcount@\m@ne
  78.  \repeat
  79.  \edef\preamble@{\the\toks@\the\toks@@}%
  80.  \edef\preamble@@{\preamble@}%
  81.  \let\maketag@\Maketag@\let\Tag@\TAG@
  82.  \let\prepost@\Prepost@\let\reprepost@\Reprepost@}
  83. \Invalid@\endxalignat
  84. \def\xxalignat{\RIfMIfI@
  85.  \DN@{\onlydmatherr@\xxalignat}\else\DN@{\csname xxalignat
  86.   \endcsname}\fi\else
  87.  \DN@{\onlydmatherr@\xxalignat}\fi\next@}
  88. \expandafter\def\csname xxalignat \endcsname#1#2\endxxalignat{\inany@true
  89.  \vspace@\allowdisplaybreak@\displaybreak@\intertext@
  90.  \displ@y\setbox\savealignat@\hbox{$\m@th\displaystyle\Let@
  91.  \xxattag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
  92.  \Let@\xxattag@{#1}\tabskip\z@skip\halign to\displaywidth
  93.  {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}}
  94. \def\xxattag@#1{\toks@{\tabskip\z@skip\hfil\strut@
  95.  $\m@th\displaystyle{\the\hashtoks@}$&%
  96.  $\m@th\displaystyle{{}\the\hashtoks@}$\hfil\tabskip\centering@&}%
  97.  \atcount@#1\relax\advance\atcount@\m@ne\loop\ifnum\atcount@>\z@
  98.  \toks@=\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\the\hashtoks@}$%
  99.   \tabskip\z@skip&$\m@th\displaystyle{{}\the\hashtoks@}$\hfil
  100.   \tabskip\centering@}\advance\atcount@\m@ne\repeat
  101.  \edef\preamble@{\the\toks@\tabskip\z@skip}\edef\preamble@@{\preamble@}}
  102. \Invalid@\endxxalignat
  103. \catcode`\@=\active
  104.